perm filename UDPMIX.FAI[MUS,LCS] blob
sn#324403 filedate 1977-12-22 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00011 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 TITLE MIXER
C00005 00003 PUSHJ P,GDLAY
C00010 00004 DLAY: ADD DUR,BC1 ADD 1st BUFFER TO DURAITOM
C00014 00005 SPLICE: SETOM SFLG# SET SPLICE FLAG
C00016 00006 1st FILE INPUT SUB
C00019 00007 2nd FILE INPUT SUB
C00022 00008 GDLAY: CLRBFI
C00025 00009 DEFAULT FILE NAMES
C00027 00010 GETNAM: MOVEI A,
C00028 00011 FLOATING POINT INPUT
C00030 ENDMK
C⊗;
TITLE MIXER
A←1 ↔ B←2 ↔ C←3 ;POINTERS TO INBUF #1,#2, AND OUTBUF
D←4 ↔ E←5
DUR←6 ↔ MAX←7 ;TOTAL DURATION, MAXIMUM AMP
R1←10 ↔ R2←11 ;RATIO #1, RATIO #2 , DEFAULT = .5
R3←12
BC1←13 ↔ BC2←14 ↔ BC3←15 ;SAMPLE COUNTS, 1st,2nd, 3rd = out buf
P←17 ↔ NBUFS←←4 ;p = PDL, NUMBER OF BUFFERS (MAYBE SHOULD BE MORE)
MIXER: MOVE P,[IOWD 20,PDL] ;SETUP PUSH DOWN LIST
SETZM NCHNS
SETZM MAX
SETZM FSRATE
SETZM BITS
CLRBFI
OUTSTR [ASCIZ/
TYPE FIRST NAME : /]
SETZ BC1, ;SET TO 0 FOR DEFAULT FILE NAME
PUSHJ P,GNAME
MOVE A,FILNAM
CAMN A,[SIXBIT/MTA0/]
JRST M0A
CAMN A,[SIXBIT/MTA1/] ; CHECK FOR READING OFF MTA0 OR MTA1
JRST M1A
OPEN 11,[14↔'U1 '↔BUF1]
JRST 4,.
OPE1: INBUF 11,NBUFS ;SETUP 1st INPUT BUFFER RING
LOOKUP 11,FILNAM
JRST MIXER
AOJ BC1, ;SET TO 1 FOR SECOND DEFAULT FILE NAME
MOVE C,BUF3+1 ;SETUP 128 WD BUFFER
ADDI C,200
IN 11, ;READ THE HEADER OF FILE 1
MOVE A,BUF1 ;LOC. OF INPUT BUFFER 1
PUSHJ P,TYPIT ;GO TYPE THE SPECS.
SECOND: CLRBFI
OUTSTR [ASCIZ/
TYPE SECOND NAME : /]
PUSHJ P,GNAME
MOVE A,FILNAM
CAMN A,[SIXBIT/MTA0/]
JRST M0B
CAMN A,[SIXBIT/MTA1/] ; CHECK FOR READING OFF MTA0 OR MTA1
JRST M1B
OPEN 2,[14↔'U1 '↔BUF2]
JRST 4,.
OPE2: INBUF 2,NBUFS ;SETUP 2nd INPUT BUFFER RING
LOOKUP 2,FILNAM
JRST SECOND
AOJ BC1, ;SET TO 2 FOR OUTPUT DEFAULT FILE NAME
IN 2, ;READ 2ND HEADER
MOVE A,BUF2
PUSHJ P,TYPIT
PUSHJ P,GDLAY
MOVEM SNUM2# ;SECOND FILE DELAY
GBITS: MOVE C,BITS
CAIE C,=18
JRST CK12
MOVEI =131071
MOVEM LIMIT# ;FOR OVERLOAD CHECK
MOVE [-1,,0] ;MUNG CODE FOR 18 BITS
MOVEM NEG
HRRZI 400000
HRRM N1
HRRM N2
HRRM N3
HRRZI -11
HRRM A1
HRRM A2
HRRZI 2 ;SETUP 18 BIT FLAG
JRST GOTB
M0A: OPEN 11,[14↔'MTA0 '↔BUF1] ;***** NEXT TO USE MAGTAPES
HALT
JRST OPE1
M1A: OPEN 11,[14↔'MTA1 '↔BUF1]
HALT
JRST OPE1
M0B: OPEN 2,[14↔'MTA0 '↔BUF2]
HALT
JRST OPE2
M1B: OPEN 2,[14↔'MTA1 '↔BUF2]
HALT
JRST OPE2
TYPIT: HRRZ B,3(A) ;THE SAMPLE RATE
SRT: FLTR B,B
HRRZ C,4(A) ; BITS/SMPL
MOVE D,5(A) ; NCHNS
;; MOVEM C,BITS# ;0=12 1=18
MOVE E,6(A)
CAML E,[=500000] ;IS IT FLOATING?
KIFIX E,E ; YES, FIX IT.
MOVEM E,MAXAMP# ;MAXAMP
CAML E,MAX ; BIGGER THAN PREV. MAXAMP?
MOVEM E,MAX ;YES
MOVE DUR,7(A) ;DURATION
MOVEM E,DURX#
OUTSTR [ASCIZ/
SRATE =/]
SKIPN FSRATE
JRST .+3
CAME B,FSRATE
PUSHJ P,DIFF
MOVEM B,FSRATE#
KIFIX B
PUSHJ P,OUTINT
OUTSTR [ASCIZ/ BITS =/]
IMULI C,=18
SKIPN C
MOVEI C,=12
MOVE C
SKIPN BITS
JRST .+3
CAME C,BITS
PUSHJ P,DIFF
MOVEM BITS#
PUSHJ P,OUTINT
OUTSTR [ASCIZ/ NCHNS =/]
SKIPN NCHNS
JRST .+3
CAME D,NCHNS
PUSHJ P,DIFF
MOVEM D,NCHNS#
MOVE D
PUSHJ P,OUTINT
OUTSTR [ASCIZ/ MAXAMP =/]
MOVE E
PUSHJ P,OUTINT
OUTSTR [ASCIZ/ SMPLS =/]
MOVE DUR
PUSHJ P,OUTINT
OUTSTR [ASCIZ/ 100*DUR=/]
KIFIX B,FSRATE
IMULI DUR,=100
MOVE DUR
IDIV NCHNS
IDIV B
PUSHJ P,OUTINT
FIXHD: POPJ P, ;STOP HERE IN DDT TO REPAIR HEADER INFO
DIFF: OUTSTR[ASCIZ/
****** HEADER DIFFERENCE ********/]
POPJ P,
;;CK12: CAIE C,=12
;; JUMPN GBITS
CK12: MOVEI =2047
MOVEM LIMIT# ;FOR OVERLOAD CHECK
MOVE [777777774000] ;MUNG CODE FOR 12 BITS
MOVEM NEG
HRRZI 774000
HRRM N1
HRRM N2
HRRM N3
HRRZI -14
HRRM A1
HRRM A2
SETZ ;SETUP 12 BIT FLAG
GOTB: HRRZM NBITS# ;NBITS = 0 IF 12 BITS, =2 IF 18 BITS
GRAT: CLRBFI
OUTSTR [ASCIZ/
DEFAULT AMPL. FACTOR RATIO = .5:.5
TYPE SPLICE OR RATIO (S OR <R1>:<R2>) -- /]
INCHWL A
CAIE A,"s"
CAIN A,"S"
JRST SPLICE
SETZM SFLG# ;SPLICE FLAG
PUSHJ P,GETNUM
SKIPG R1,
MOVE R1,[DOT5: =0.5]
SKIPN NBITS
FMPR R1,[=4096.] ;SHIFT TO MIDDLE OF WORD
SKIPE NBITS
FMPR R1,[=512.]
KIFIX R1,R1
INCHRS A
JRST .+3 ;NO DOT
PUSHJ P,GETNUM
SKIPG R2,
MOVE R2,DOT5
SKIPN NBITS
FMPR R2,[=4096.] ;SHIFT TO MIDDLE OF WORD
SKIPE NBITS
FMPR R2,[=512.]
KIFIX R2,R2
PUSHJ P,ONAME ;GET OUTPUT FILE NAME
AOJ BC2, ;??
;; SETZ MAX, ;START AT 0 MAX AMP
SETOM DFLG# ;SET DELAY FLAG
DLAY: ADD DUR,BC1 ;ADD 1st BUFFER TO DURAITOM
CAML DUR,SNUM2 ;CHECK IF PAST 2nd START TIME
JRST FIND
PUSHJ P,MOV ;COPY 1st FILE TO OUTPUT
PUSHJ P,IN1 ;GET MORE INPUT
JRST DLAY
; COPIER SUB
MOV: ILDB D,A ;GET INPUT SAMPLE
N1: TRNE D,774000 ;CHECK IF NEGATIVE
TDO D,[NEG: 777777774000] ;MAKE NEGATIVE
IMUL D,R1 ;MULTIPLY BY FIRST RATIO
A1: ASH D,-14 ;SHIFT END OF WORD (NO FRACTION)
CAMLE D,MAX ;CHECK IF > MAX AMP
MOVE MAX,D ;NEW MAX **** NO CHECK FOR OVERLOAD
IDPB D,C ;STORE IN OUT BUF
SOJLE BC3,MOVO ;CHECK FOR FULL OUT BUF
SOJG BC1,MOV ;MORE COPY?
POPJ P,
MOVO: PUSHJ P,OBUF ;GET NEW OUT BUF
SOJG BC1,MOV ;MORE COPY?
POPJ P,
; END OF FIRST DELAY
FIND: SUB DUR,SNUM2 ;GET COUNT OF FIRST MIX BUFFER
SOJ BC2, ;??
SUB BC1,DUR ;GET COPY COUNT
SKIPLE BC1
PUSHJ P,MOV ;COPY END OF DELAY
SETFLG: SETZM DFLG ;NO MORE DELAY
SKIPG BC1,DUR ;GET REST OF 1st BUF COUNT
PUSHJ P,IN1 ;GET NEW INBUF IF EMPTY
MOVE DUR,SNUM2 ;DURATION ← DELAY TIME
ADD DUR,BC2 ;DUR ← DUR + OUT BUF COUNT
MIX: ILDB D,A ;GET 1st SAMPLE
N2: TRNE D,774000 ;FIX FOR NEGATIVE
TDO D,NEG
ILDB E,B ;GET 2nd SAMPLE
N3: TRNE E,774000 ;FIX FOR NEGATIVE
TDO E,NEG
IMUL D,R1 ;* 1st RATIO
IMUL E,R2 ;* 2nd RATIO
ADD D,E ;MIX TWO SAMPLES
A2: ASH D,-14 ;GET RID OF FRACTION
;;; CAMLE D,MAX
;;; MOVE MAX,D ;UPDATE MAX AMP
CAMG D,MAX ;CHECK IF > MAX AMP
JRST OKMAX
MOVE MAX,D
CAMG MAX,LIMIT ;CHECK FOR OVERLOAD
JRST OKMAX
OUTSTR [ASCIZ /
***** AMPL. OVERLOAD /]
MOVE MAX
PUSHJ P,OUTINT
OKMAX: IDPB D,C ;STORE IN OUT BUF
SOJLE BC3,MIXO ;CHECK FOR FULL OUT BUF
CKIN: SOJLE BC1,MIXI ;CHECK FOR 1st IN BUF FULL
SOJG BC2,MIX ;CHECK FOR 2nd IN BUF FULL
PUSHJ P,IN2 ;GET NEW IN BUF #2
ADD DUR,BC2 ;UPDATE DURATION
JRST MIX
MIXO: PUSHJ P,OBUF ;GET NEW OUT BUF
JRST CKIN
MIXI: PUSHJ P,IN1 ;GET NEW IN BUF #1
JRST CKIN+1
SPLICE: SETOM SFLG# ;SET SPLICE FLAG
PUSHJ P,ONAME ;GET OUTPUT FILE NAME
SLOOP: ADD DUR,BC3 ;ADD OUT COUNT TO DURATION
CAML DUR,SNUM2 ;CHECK IF PAST SECOND START TIME
JRST NXPART
PUSHJ P,SPLOP ;COPY IT
PUSHJ P,OBUF ;OUTPUT IT
PUSHJ P,IN1 ;GET MORE INPUT
JRST SLOOP
; SPLICE COPIER SUB
SPLOP: ILDB D,A ;GET SAMPLE FROM IN BUF
IDPB D,C ;STORE SAMPLE IN OUT BUF
SOJG BC3,SPLOP ;CHECK IF OUT BUF FULL
POPJ P,
; SECOND FILE START
NXPART: SUB DUR,SNUM2
SUB BC3,DUR ;GET NUMBER OF SAMPLES LEFT IN 1st FILE
SKIPLE BC1,BC3 ;SET UP 1st BYTE COUNT WITH NUMBER LEFT IN OUTBUF
PUSHJ P,SPLOP ;COPY LAST SAMPLES OF 1st FILE IF ANY
FINSH: MOVE A,B ;SETUP 1st POINTER TO POINT TO 2nd INBUF
SKIPLE BC3,DUR ;OUTBUF COUNT ← NUMBER LEFT IN OUTBUF
PUSHJ P,SPLOP ;FILL REST OF OUTBUF WITH 2nd INBUF, IF ANY
PUSHJ P,OBUF ;OUTPUT IT
EXCH DUR,SNUM2 ;DURATION ← DELAY TIME, SAVE COUNT BETWEEN IN & OUT
FIL2: ADD DUR,BC2 ;ADD 2nd INBUF COUNT TO DURATION
SKIPLE BC3,BC1 ;OUTBUF COUNT ← NUMBER LEFT IN OUTBUF
PUSHJ P,SPLOP ;COPY IT
PUSHJ P,IN2 ;GET MORE OF 2nd FILE
MOVE A,B ;POINT TO 2nd INBUF
SKIPLE BC3,SNUM2 ;SETUP IN TO OUT COUNT
PUSHJ P,SPLOP ;COPY IT
PUSHJ P,OBUF ;OUTPUT IT
JRST FIL2
; 1st FILE INPUT SUB
IN1: IN 11,
CAIA
JRST CKEOF
SKIPN BC1,NBITS
HRRZI BC1,3
IMUL BC1,BUF1+2 ;MULTIPLY WORD COUNT BY NUM OF SAMPLES IN A WORD
HRRZ A,BUF1+1 ;POINT TO 1st INBUF
HRLI A,1400 ;NUMBER OF BITS IN SAMPLE
SKIPE NBITS
HRLI A,2200
POPJ P,
CKEOF: STATO 11,20000 ;CHECK FOR ERROR
JRST 4,.
SETOM EOF1 ;SET END OF FILE #1
SKIPGE EOF2 ;CHECK IF SECOND FILE DONE
JRST DONE
SKIPL SFLG
SKIPGE DFLG
JRST BREAK ;FILL WITH ZEROS IF SPLICE OR DELAY
PART2: MOVE R1,R2 ;RATIO #1 ← RATIO #2
SOJLE BC2,GMOR ;CHECK FOR MORE 2nd INPUT
MOVE BC1,BC2 ;SAMPLE COUNT #1 ← SAMPLE COUNT #2
MOVE A,B ;POINT TO INBUF #2
PUSHJ P,MOV ;COPY IT
GMOR: PUSHJ P,IN2 ;GET MORE INPUT
ADD DUR,BC2 ;UPDATE DURATION
JRST PART2+2
BREAK: SUB DUR,SNUM2 ;DUR ← NEGATIVE NUMBER OF SAMPLES TO ZERO
SKIPGE SFLG
JRST ZSPL ;JUMP IF SPLICE
SETZ D,
ZRIT: IDPB D,C ;ZERO SAMPLE IN OUTBUF
SOJLE BC3,ZOB ;CHECK IF OUTBUF FULL
AOJL DUR,ZRIT ;ZERO REST OF DELAY BETWEEN FILES
MOVE DUR,SNUM2 ;DURATION ← DELAY TIME
JRST PART2
ZOB: PUSHJ P,OBUF ;GET NEW OUTBUF
JRST ZRIT+2
ZSLOP: ADD DUR,BC3
JUMPG DUR,ZEND ;ALMOST DONE IF OUTBUF COUNT + DURATION > DELAY
HRLI C,-200
SETZM 1(C) ;ZERO OUTBUF
AOBJN C,.-1
PUSHJ P,OBUF ;OUTPUT IT
ZSPL: JUMPL DUR,ZSLOP ;JUMP IF MORE THAN ONE OUTBUF
HRRZI BC1,600 ;??
SKIPE NBITS
HRRZI BC1,400
JRST EQEND
ZEND: MOVE DUR
SUB BC3
MOVN BC1, ;BYTE COUNT #1 ← NUM OF SAMPLES LEFT IN OUTBUF
SETZ
IDPB C ;ZERO IT
AOJL .-1
EQEND: MOVE A,B ;POINT TO INBUF #2
POP P,D ;GET RID OF RETURN ADDRESS
JRST FIL2-1 ;??
; 2nd FILE INPUT SUB
IN2: IN 2,
CAIA
JRST CKEOF2
SKIPN BC2,NBITS
HRRZI BC2,3
IMUL BC2,BUF2+2 ;MULTIPLY WORD COUNT BY NUM OF SAMPLES IN A WORD
HRRZ B,BUF2+1 ;POINT TO 1st INBUF
HRLI B,1400 ;NUMBER OF BITS IN SAMPLE
SKIPE NBITS
HRLI B,2200
POPJ P,
CKEOF2: STATO 2,20000 ;CHECK FOR ERROR
JRST 4,.
SETOM EOF2 ;SET END OF FILE FLAG #2
SKIPL SFLG
SKIPGE EOF1
JRST DONE ;DONE IF SPLICE OR FILE #1 DONE
ADD DUR,BC1 ;UPDATE DURATION
PUSHJ P,MOV ;COPT IT
PUSHJ P,IN1 ;GET MORE INPUT FROM FILE #1
JRST .-3 ;DO INTIL DONE
; OUTPUT FILE SUB
OBUF: HRRM C,BUF3+1 ;POINT TO LAST OUTBUF WORD
OUT
CAIA
JRST 4,.
SKIPN BC3,NBITS
HRRZI BC3,3
IMUL BC3,BUF3+2 ;BC3 ← NUM OF WORDS IN OUTBUF * NUM OF SAMPLES IN A WORD
HRRZ C,BUF3+1 ;POINT TO OUTBUF
HRLI C,1400 ;NUMBER OF BITS IN SAMPLE
SKIPE NBITS
HRLI C,2200
POPJ P,
; OUTPUT FILE NAME SUB
ONAME: CLRBFI
OUTSTR [ASCIZ/
TYPE OUTPUT NAME (DEFAULT=MIX.SND) -- /]
PUSHJ P,GNAME
OPEN [14↔'U2 '↔BUF3,,0]
JRST 4,.
OUTBUF NBUFS ;SETUP OUTPUT BUFFER RING
ENTER FILNAM
JRST ONAME
PUSHJ P,OBUF+1 ;+1 → NO OUTPUT YET
SETZM EOF1# ;INIT END OF FILE #1 FLAG
SETZM EOF2# ;INIT END OF FILE #2 FLAG
SETZ DUR, ;DURATION ← 0
PUSHJ P,IN1 ;GET A BUFFER FROM 1st FILE
PUSHJ P,IN2 ;GET A BUFFER FROM 2nd FILE
HEADX: MOVE C,BUF3+1 ;SETUP 128 WD BUFFER
ADDI C,200
PUSHJ P,OBUF ;PUT OUT A HEADER, EMPTY FOR NOW
POPJ P,
GDLAY: CLRBFI
OUTSTR [ASCIZ/
DELAY TIME = /]
INCHWL A
PUSHJ P,GETNUM
HRRZ A,NCHNS
FLTR A,A
FMPR A
FMPR FSRATE
KIFIX 0,0
POPJ P, ;RETURNS WITH NUM OF CHANS * SRATE * DELAY IN AC0
DONE: PUSHJ P,OBUF ;OUTPUT LAST STUFF
USETO 0,1 ; REWRITE HEADER BLOCK
OUT ;GOD ONLY KNOWS WHY THIS HAS TO BE HERE.
;************** OUTPUT HEADER
MOVE 2,BUF3 ;POINTER TO BUFFER
MOVEI 200
MOVEM 1(2)
MOVE [525252525252] ;"525252525252
MOVEM 2(2)
KIFIX FSRATE
MOVEM 3(2)
SETZ
MOVEI 1,14
CAME 1,BITS
AOS
MOVEM 4(2) ; BITS
MOVE NCHNS ;NCHNS
MOVEM 5(2)
FLTR 0,MAX
MOVEM 0,6(2) ; FLOATING MAXAMP
MOVEM DUR,7(2) ; NO. OF SAMPLES
WRTHDR: MOVE C,BUF3+1 ;SETUP 128 WD BUFFER
ADDI C,200
PUSHJ P,OBUF
RELEAS ;FINISH AND RELEASE DISK
SKIPGE SFLG
JRST NOMAX ;NO TYPEOUT OF MAX AMP IF SPLICE
OUTSTR [ASCIZ/
MAX AMPL = /]
MOVE MAX
PUSHJ P,OUTINT ;TYPEOUT MAX AMP
NOMAX: OUTSTR [ASCIZ/
NUMBER OF SAMPLES = /]
MOVE DUR
PUSHJ P,OUTINT ;TYPEOUT NUMBER OF SAMPLES
OUTSTR [ASCIZ/
TOTAL DUR = /]
IDIV DUR,NCHNS
FLTR DUR,DUR
FDVR DUR,FSRATE
KIFIX 0,DUR
PUSHJ P,OUTINT ;TYPEOUT DURATION / NUM OF CHANS / SRATE
HRRZI "."
OUTCHR
MOVE DUR
KIFIX DUR,DUR
FLTR DUR,DUR
FSBR DUR
FMPR [=10000.]
KIFIX 0,0
AOJ
IDIVI =10
PUSHJ P,OUTINT ;TYPEOUT REMAINDER
EXIT
; DEFAULT FILE NAMES
NAME: 'TEST ' ;1st INPUT NAME
'TEST ' ;2nd INPUT
'MIX ' ;OUTPUT
EXT: 'SND ' ;1st INPUT EXTENTION
'SND ' ;2nd INPUT
'SND ' ;OUTPUT
; FILE NAME PARSER
GNAME: SETZM FILEXT+1
SETZM FILPPN
MOVE A,EXT(BC1)
MOVEM A,FILEXT
PUSHJ P,GETNAM
SKIPN A
MOVE A,NAME(BC1)
GEXT: MOVEM A,FILNAM
CAIE C,"."
JRST NOEXTN
PUSHJ P,GETNAM
MOVEM A,FILEXT
NOEXTN: CAIE C,"["
JRST FFDX
PUSHJ P,GETP
HRLZM A,FILPPN
PUSHJ P,GETP
HRRM A,FILPPN
FFDX: INCHRW C
CAIE C,12
JRST FFDX
POPJ P,
GETNAM: MOVEI A,
MOVE B,[440600,,A]
GETNML: PUSHJ P,RCH
POPJ P,
SUBI C,40
TLNE B,770000
IDPB C,B
JRST GETNML
GETP: MOVEI A,
GETPL: PUSHJ P,RCH
POPJ P,
TRNE A,770000
JRST GETPL
LSH A,6
ADDI A,-40(C)
JRST GETPL
RCH: INCHWL C
CAIN C,42
JRST RCHQ
CAIE C,11
CAIN C," "
JRST RCH
CAIE C,"."
CAIN C,","
POPJ P,
CAIE C,"["
CAIN C,"]"
POPJ P,
RCHQR: CAIGE C,40
POPJ P,
CAIL C,"a"
CAILE C,"z"
CAIA
SUBI C,40
POPJ1: AOS (P)
POPJ P,
RCHQ: INCHWL C
JRST RCHQR
; FLOATING POINT INPUT
GETNUM: PUSHJ P,INNUM
FLTR 0,0
CAIE A,"."
POPJ P,
MOVE C,
INCHRS A
POPJ P,
PUSHJ P,INNUM
JUMPE NODP
FLTR 0,0
FMPR TABL(B)
NODP: FADR C
POPJ P,
TABL: =0.1
=0.01
=0.001
=0.0001
=0.00001
; INTEGER INPUT
INNUM: SETZ
SETO B,
CAIL A,60
CAILE A,71
POPJ P,
IMULI =10
ADDI -60(A)
AOJ B,
INCHRS A
POPJ P,
JRST INNUM+2
; INTEGER TYPEOUT
OUTINT: HRRZI B,7
JUMPE OUTZ
IDIVI =10
ADDI A,60
HRRZM A,BLK(B)
SOJGE B,OUTINT+1
OCHR: OUTCHR BLK+1(B)
CAIGE B,6
AOJA B,OCHR
POPJ P,
OUTZ: CAIL B,7
HRLZI B,300000
JRST OCHR
FILNAM: 0
FILEXT: 0
0
FILPPN: 0
BUF1: BLOCK 3
BUF2: BLOCK 3
BUF3: BLOCK 3
PDL: BLOCK 44
ACBLK: BLOCK 20
BLK: BLOCK 10
END MIXER